#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
  int fd = open("log.txt", O_WRONLY | O_CREAT, 0666);
	if (fd < 0)
  { 
		perror("open");
		return 1;
	}
	close(1);
	dup2(fd, 1);
	printf("hello printf\n");
	fprintf(stdout, "hello fprintf\n");
  return 0;
//  close(0);
//	int fd = open("log.txt", O_RDONLY | O_CREAT, 0666);
//	if (fd < 0)
//  {
//		perror("open");
//		return 1;
//	}
//	char str[40];
//	while (fgets(str, sizeof(str), stdin) != NULL)//本来是从stdin中读取，但现在0对应的为log.txt，所以现在是从log.txt中读取
//  {
//		printf("%s", str);
//	}
//	close(fd);
//	return 0;

//	int fd = open("log.txt", O_WRONLY | O_CREAT|O_APPEND, 0666);
//	if (fd < 0)
//  {
//		perror("open");
//		return 1;
//	}
//	printf("hello world\n");//原本向屏幕打印，但是现在1对应的是log.txt
//	printf("hello world\n");//所以现在数据流向了log.txt
//	printf("hello world\n");
//	printf("hello world\n");
//	printf("hello world\n");
//	fflush(stdout);
//	
//	close(fd);
//
//  return 0;
 // printf("stdin:  %d\n",stdin->_fileno);
 // printf("stdout: %d\n",stdout->_fileno);
 // printf("stderr: %d\n",stderr->_fileno);
 // 
 // int fd1 = open("log1.txt", O_RDONLY | O_CREAT, 0666);
 // int fd2 = open("log2.txt", O_RDONLY | O_CREAT, 0666);
 // int fd3 = open("log3.txt", O_RDONLY | O_CREAT, 0666);
 // int fd4 = open("log4.txt", O_RDONLY | O_CREAT, 0666);
 // int fd5 = open("log5.txt", O_RDONLY | O_CREAT, 0666);
 // printf("fd1:%d\n", fd1);
 // printf("fd2:%d\n", fd2);
 // printf("fd3:%d\n", fd3);
 // printf("fd4:%d\n", fd4);
 // printf("fd5:%d\n", fd5);
 // return 0;
}

//int main() 
//{ 
//    umask(0);
//    int flags = O_WRONLY | O_CREAT | O_TRUNC;
//   // mode_t mode = S_IRUSR | S_IWUSR; // 用户读写权限（0600）
//    mode_t mode = 0666; // 用户读写权限（0666）
//    int fd = open("test.txt", flags, mode);
//    if (fd == -1) {
//        // 处理错误
//        return 1;
//    }
//    write(fd, "Hello World", 11);
//    close(fd);
//    return 0;
//}
